package Controler;

import DAO.FreteDAO;
import static DAO.FreteDAO.ExisteFrete;
import static DAO.FreteDAO.InsertFrete;
import static DAO.FreteDAO.UpdateFrete;
import java.util.ArrayList;
import Model.Frete;
import Model.ItemFrete;
import View.ManterFreteView;

public class FreteControl {
    
    public static int QuantFretes(){
        
        return FreteDAO.QuantFretes();
    }
    
    public static String[][] getListaFretes(){
        ArrayList<Frete> Fretes = FreteDAO.getListaFretes();
        if(Fretes==null){
            return null;
        }
        String Lista[][] = new String[Fretes.size()][5];
        
        for(int i=0;i<Fretes.size();i++){
            Lista[i][0] = String.valueOf(Fretes.get(i).getCodigoFrete());
            Lista[i][1] = Fretes.get(i).getNomeRem();
            Lista[i][2] = Fretes.get(i).getNomeDest();
            Lista[i][3] = String.format("R$ %.2f",Fretes.get(i).getValorFrete());
            if(Fretes.get(i).isOrcamento()){
                Lista[i][4] = "Orçamento";
            }else{
                Lista[i][4] = "Frete";
            }
        }
        
        return Lista;
    }
    public static ArrayList getCidades(){
        return FreteDAO.getCidades();
    }
    
    public static double getDistancia(String CidOrig, String CidDest){
        return FreteDAO.getDistancia(CidOrig,CidDest);
    }
    
    public static int ProximoFrete(){
        return FreteDAO.ProximoFrete();
    }
    
    public static boolean SalvarFrete(String dados[], String MatItens[][], int Qitens){
        
        Frete F = new Frete();
        
        ArrayList<ItemFrete> Itens = new ArrayList();
        
        
        F.setCodigoFrete(Integer.parseInt(dados[0]));
    
        F.setCEPRem(dados[1]);
        F.setNomeRem(dados[2]);
        F.setEndRem(dados[3]);
        F.setBaiRem(dados[4]);
        F.setNomeCidRem(dados[5]);
        F.setNumRem(dados[6]);
        F.setUFRem(dados[7]);
        F.setCPFRem(dados[8]);
        F.setTelRem(dados[9]);
        F.setCelRem(dados[10]);
        F.setEmailRem(dados[11]);

        F.setCEPDest(dados[12]);
        F.setNomeDest(dados[13]);
        F.setEndDest(dados[14]);
        F.setBaiDest(dados[15]);
        F.setNomeCidDest(dados[16]);
        F.setNumDest(dados[17]);
        F.setUFDest(dados[18]);

        F.setModalidade(dados[19]);

        F.setOrcamento(dados[20].equals("true"));
        
        
        
        for(int i =0;i<Qitens;i++){
            ItemFrete ItemAux = new ItemFrete();
            ItemAux.setCodigoFrete(Integer.parseInt(dados[0]));
            ItemAux.setCodigoItem(Integer.parseInt(MatItens[i][0]));
            ItemAux.setPeso(Double.parseDouble(MatItens[i][1]));
            ItemAux.setVolume(Double.parseDouble(MatItens[i][2]));
            ItemAux.setEmbalagem(MatItens[i][3]);
            Itens.add(ItemAux);
            
        }
        
        double Peso = 0;
        
        for(int i=0;i<Itens.size();i++){
            Peso+=Itens.get(i).getPeso();
        }
        
        String valor = dados[21];
        F.setValorFrete(Double.parseDouble(valor.replace(",",".")));
        
        F.setVolumes(Qitens);
        F.setItens(Itens);
        
        
        if( ExisteFrete(F.getCodigoFrete()) ){
            return FreteDAO.UpdateFrete(F);
        }else{
            return FreteDAO.InsertFrete(F);
            
        }
    }
    
    public static boolean ExcluirFrete(int cod){
        return FreteDAO.ExcluirFrete(cod);
    }
    
    public static Frete GetFrete(int cod){
        
        return FreteDAO.GetFrete(cod);
    }
}

